// Package main 提供了一个使用 Gin 框架处理 HTML 模板和静态资源的 Web 服务器示例
package main

import (
	"net/http" // 导入 net/http 包，用于处理 HTTP 请求

	"github.com/gin-gonic/gin" // 导入 Gin Web 框架
)

// RunHtmlServer 初始化 Gin 路由器，配置 HTML 模板和静态资源，注册路由处理函数，启动 Web 服务器
func RunHtmlServer() {
	// 创建默认的 Gin 路由器实例
	r := gin.Default()

	// 加载 HTML 模板文件
	// 参数: 模板文件匹配模式，这里加载 templates 目录下的所有文件
	r.LoadHTMLGlob("templates/*")

	// 配置静态文件服务
	// 第一个参数: 网页请求静态目录的 URL 前缀
	// 第二个参数: 本地静态文件目录路径
	// 注意: URL 前缀不要重复
	r.StaticFS("/static", http.Dir("static/static"))

	// 配置单个静态文件服务
	// 第一个参数: 网页请求的路由路径
	// 第二个参数: 本地文件路径
	r.StaticFile("/titian.png", "static/titian.png")

	// 注册路由：GET 请求 "/index" 路径映射到匿名处理函数
	// 当用户访问 http://localhost:8000/index 时，渲染 index.html 模板
	r.GET("/index", func(c *gin.Context) {
		// 渲染 HTML 模板并返回
		// 参数1: HTTP状态码，200表示请求成功
		// 参数2: 模板文件名
		// 参数3: 传递给模板的数据，这里传递了 title 变量
		c.HTML(200, "index.html", gin.H{
			"title": "gin传的参数", // 传递给模板的变量
		})
	})

	// 启动 HTTP 服务器，监听 8000 端口
	// 如果启动失败，会返回一个 error 类型的错误信息
	if err := r.Run(":8000"); err != nil {
		// 使用 panic 输出启动失败的错误信息
		panic(err)
	}
}
